Die Graphdatenbank sones ist ein Open-Source-Projekt, das auf Mono aufsetzt. Solche Datenbanken unterscheiden sich vom klassischen SQL-Ansatz. Der Vortrag erläutert zunächst Grundlagen und anschließend diese Unterschiede anhand von Beispielen. Eine Live-Demo zeigt den Umgang mit Daten in einem Graphen auf.
More than Just Lines on a Map: Best Practices for U.S Bike Routes
sones GraphDB + MONO + Linux
1. Graphen auf Linux
GraphDB + Mono + Linux
Daniel Kirstenpfad
sones GmbH
Schillerstrasse 5
04109 Leipzig
Confidential
sones GmbH| 18.05.11
1
2. Überblick
§ Was ist ein Graph?
§ GraphDB von sones
§ das Mono Projekt
§ Anwendungsfälle
§ Demo
Confidential
sones GmbH| 18.05.11
2
1
3. Was ist ein Graph?
§ Knoten + Kanten à ungerichteter Graph
§ Beispiel: Strassenkarte
§ Alle Knoten haben den gleichen „Typen“
§ Alle Kanten „bedeuten“ die gleiche Art von Beziehung
§ Alle Beziehungen sind symetrisch
Knoten
1
Knoten
2
Knoten
3
Knoten
4
Confidential
sones GmbH| 18.05.11
3
1
4. Was ist ein Graph?
§ Gerichtete Kanten ergeben einen gerichteten Graphen
§ Beispiele: Twitter, href-Beziehungen im Web
§ Alle Knoten haben den gleichen „Typen“
§ Alle Kanten „bedeuten“ die gleiche Art von Beziehung
§ Alle Beziehungen sind asymetrisch
ist Freun
Knoten d vo n
1
Knoten
2
Knoten
3
Knoten
ist Freund von 4
Confidential
sones GmbH| 18.05.11
4
1
5. „Single Relational Structures“
§ Solange man innerhalb eines Graphen immer nur einen
Bedeutung für alle Kanten hat spricht man von
„Single Relational Structures“
ist Freund
Knoten von
1
Knoten
2
Knoten
3
Knoten
ist Fre
und vo 4
n
Confidential
sones GmbH| 18.05.11
5
1
6. Property Graph und Ontologien
§ Knoten und Kanten des Property Graphen liegt eine
Objekt-Ontologie zugrunde
§ Property Graph
– Knoten und Kanten haben key/value Properties (Attribute)
Name = String Name = String
Gewicht = Integer Datum = DateTime
Alter = Integer Sender = SenderType
befreundet
Name = Auftritt
Homer S01E01
Simpson
Alter=40 Name=S01E01
Gewicht=131 Datum=01.01.1991
Sender=ZDF
Confidential
sones GmbH| 18.05.11
6
1
7. Warum GraphDB?
§ Man kann eine „etwas steht in einer Beziehung mit etwas“
in fast jeder Datenbank modellieren
1
4
XML
graphml
graph
2
node id=1 /
3
node id=2 /
node id=3 /
node id=4 /
JSON edge source=1 target=4 /
edge source=1 target=2 /
SQL {
edge source=2 target=3 /
1 : { nach : [4,2] }
von
Nach
/graph
2 : { nach : [3] }
/graphml
1
4
}
1
2
2
3
Confidential
sones GmbH| 18.05.11
7
1
8. Warum GraphDB?
§ Man kann eine „etwas steht in einer Beziehung mit etwas“
in fast jeder Datenbank modellieren
– Probleme:
• „Teure“ JOINs (was passiert bei Milliarden von
Verbindungen?)
• Index Lookups um herauszufinden welche Knoten
verbunden sind
1
4
2
3
Confidential
sones GmbH| 18.05.11
8
1
9. GraphDB von sones
§ Seit 30.06.2010 OpenSource unter AGPLv3
– http://github.com/sones/sones
§ Seit dieser Woche in Version 2.0 verfügbar
§ performante modulare GraphDB
§ Property Graph + minimale Ontologie
– frei definierbare Attribute an Objekten,Vererbung von Attributen (~OOP)
§ Offene Schnittstellen zur Plug-In Entwicklung
§ SQL ähnliche, einfache Anfragesprache „GQL“
§ REST Schnittstelle (XML, JSON)
§ leistungsfähige API mit Languagebindings für C#, Java,
Javascript, PHP
§ Platformunabhängig dank des Mono Projects
Confidential
sones GmbH| 18.05.11
9
1
10. das Mono Projekt
§ Open Source Implementierung der
Common Language Runtime (CLR) von .NET
§ Binärkompatibel mit Microsoft.NET
§ Open Source Implementierung des größten
Teils der .NET Klassenbibliothek
– .NET 1.1, 2.0, 3.5, 4.0
§ Platformunabhängig
– Linux, Windows, Mac OSX, BSD, Solaris,...
§ Unterstützung weiterer Programmiersprachen
wie z.B. F# (Funktionale Programmierung)
§ http://www.mono-project.com/
§ http://github.com/mono
Confidential
sones GmbH| 18.05.11
10
1
11. GraphDB auf Mono
§ GraphDB stellt hohe Anforderungen an Mono
– Garbage Collector muss performant und stabil funktionieren
– Viele parallel laufende Prozesse (Parallel Framework, Lock Free Data
Structures,...)
Confidential
sones GmbH| 18.05.11
11
1
12. Monospace Conference
23. – 25. Juli 2011
Boston, USA
http://monospace.us
Confidential
sones GmbH| 18.05.11
12
1
13. Beispiel: „Wortschatz Leipzig“
§ Relationale Datenbank vs. GraphDB
§ Über 26 Mio. Rows in 4 Tabellen sind reine Relationendaten
Confidential
sones GmbH| 18.05.11
13
1
14. Beispiel: „Wortschatz Leipzig“
MySQL Query
SELECT w.word AS wort, k.sig AS sig FROM co_s k, words w WHERE k.w1_id=
(SELECT w_id FROM words w WHERE word = “Laptop”) AND k.w2_id=w.w_id
ORDER BY k.sig DESC LIMIT 10;
Confidential
sones GmbH| 18.05.11
14
1
15. Beispiel: „Wortschatz Leipzig“
MySQL Query
SELECT w.word AS wort, k.sig AS sig FROM co_s k, words w WHERE k.w1_id=
(SELECT w_id FROM words w WHERE word = “Laptop”) AND k.w2_id=w.w_id
ORDER BY k.sig DESC LIMIT 10;
GQL Query
FROM Word SELECT Cooccurrences.TOP(10) WHERE Content = ‘Laptop’;
Confidential
sones GmbH| 18.05.11
15
1